<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>create_template [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_legacy.html">过时</a> / <a href="toc_legacy_matching.html">Matching</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">create_template</span><span data-if="c" style="display:none;">T_create_template</span><span data-if="cpp" style="display:none;">CreateTemplate</span><span data-if="dotnet" style="display:none;">CreateTemplate</span><span data-if="python" style="display:none;">create_template</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">create_template</span><span data-if="c" style="display:none;">T_create_template</span><span data-if="cpp" style="display:none;">CreateTemplate</span><span data-if="dotnet" style="display:none;">CreateTemplate</span><span data-if="python" style="display:none;">create_template</span></code> — Preparing a pattern for template matching.</p>
<h2>警告</h2>
<p><b><code><span data-if="hdevelop" style="display:inline">create_template</span><span data-if="c" style="display:none">create_template</span><span data-if="cpp" style="display:none">CreateTemplate</span><span data-if="com" style="display:none">CreateTemplate</span><span data-if="dotnet" style="display:none">CreateTemplate</span><span data-if="python" style="display:none">create_template</span></code> is obsolete and is only provided for
reasons of backward compatibility. New applications should use the
shape-based or NCC-based operators instead.</b></p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>create_template</b>(<a href="#Template"><i>Template</i></a> :  : <a href="#FirstError"><i>FirstError</i></a>, <a href="#NumLevel"><i>NumLevel</i></a>, <a href="#Optimize"><i>Optimize</i></a>, <a href="#GrayValues"><i>GrayValues</i></a> : <a href="#TemplateID"><i>TemplateID</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_create_template</b>(const Hobject <a href="#Template"><i>Template</i></a>, const Htuple <a href="#FirstError"><i>FirstError</i></a>, const Htuple <a href="#NumLevel"><i>NumLevel</i></a>, const Htuple <a href="#Optimize"><i>Optimize</i></a>, const Htuple <a href="#GrayValues"><i>GrayValues</i></a>, Htuple* <a href="#TemplateID"><i>TemplateID</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>CreateTemplate</b>(const HObject&amp; <a href="#Template"><i>Template</i></a>, const HTuple&amp; <a href="#FirstError"><i>FirstError</i></a>, const HTuple&amp; <a href="#NumLevel"><i>NumLevel</i></a>, const HTuple&amp; <a href="#Optimize"><i>Optimize</i></a>, const HTuple&amp; <a href="#GrayValues"><i>GrayValues</i></a>, HTuple* <a href="#TemplateID"><i>TemplateID</i></a>)</code></p>
<p>
<code>void <a href="HTemplate.html">HTemplate</a>::<b>HTemplate</b>(const HImage&amp; <a href="#Template"><i>Template</i></a>, Hlong <a href="#FirstError"><i>FirstError</i></a>, Hlong <a href="#NumLevel"><i>NumLevel</i></a>, const HString&amp; <a href="#Optimize"><i>Optimize</i></a>, const HString&amp; <a href="#GrayValues"><i>GrayValues</i></a>)</code></p>
<p>
<code>void <a href="HTemplate.html">HTemplate</a>::<b>HTemplate</b>(const HImage&amp; <a href="#Template"><i>Template</i></a>, Hlong <a href="#FirstError"><i>FirstError</i></a>, Hlong <a href="#NumLevel"><i>NumLevel</i></a>, const char* <a href="#Optimize"><i>Optimize</i></a>, const char* <a href="#GrayValues"><i>GrayValues</i></a>)</code></p>
<p>
<code>void <a href="HTemplate.html">HTemplate</a>::<b>HTemplate</b>(const HImage&amp; <a href="#Template"><i>Template</i></a>, Hlong <a href="#FirstError"><i>FirstError</i></a>, Hlong <a href="#NumLevel"><i>NumLevel</i></a>, const wchar_t* <a href="#Optimize"><i>Optimize</i></a>, const wchar_t* <a href="#GrayValues"><i>GrayValues</i></a>)  <span class="signnote">
            (
            Windows only)
          </span></code></p>
<p>
<code>void <a href="HTemplate.html">HTemplate</a>::<b>CreateTemplate</b>(const HImage&amp; <a href="#Template"><i>Template</i></a>, Hlong <a href="#FirstError"><i>FirstError</i></a>, Hlong <a href="#NumLevel"><i>NumLevel</i></a>, const HString&amp; <a href="#Optimize"><i>Optimize</i></a>, const HString&amp; <a href="#GrayValues"><i>GrayValues</i></a>)</code></p>
<p>
<code>void <a href="HTemplate.html">HTemplate</a>::<b>CreateTemplate</b>(const HImage&amp; <a href="#Template"><i>Template</i></a>, Hlong <a href="#FirstError"><i>FirstError</i></a>, Hlong <a href="#NumLevel"><i>NumLevel</i></a>, const char* <a href="#Optimize"><i>Optimize</i></a>, const char* <a href="#GrayValues"><i>GrayValues</i></a>)</code></p>
<p>
<code>void <a href="HTemplate.html">HTemplate</a>::<b>CreateTemplate</b>(const HImage&amp; <a href="#Template"><i>Template</i></a>, Hlong <a href="#FirstError"><i>FirstError</i></a>, Hlong <a href="#NumLevel"><i>NumLevel</i></a>, const wchar_t* <a href="#Optimize"><i>Optimize</i></a>, const wchar_t* <a href="#GrayValues"><i>GrayValues</i></a>)  <span class="signnote">
            (
            Windows only)
          </span></code></p>
<p>
<code><a href="HTemplate.html">HTemplate</a> <a href="HImage.html">HImage</a>::<b>CreateTemplate</b>(Hlong <a href="#FirstError"><i>FirstError</i></a>, Hlong <a href="#NumLevel"><i>NumLevel</i></a>, const HString&amp; <a href="#Optimize"><i>Optimize</i></a>, const HString&amp; <a href="#GrayValues"><i>GrayValues</i></a>) const</code></p>
<p>
<code><a href="HTemplate.html">HTemplate</a> <a href="HImage.html">HImage</a>::<b>CreateTemplate</b>(Hlong <a href="#FirstError"><i>FirstError</i></a>, Hlong <a href="#NumLevel"><i>NumLevel</i></a>, const char* <a href="#Optimize"><i>Optimize</i></a>, const char* <a href="#GrayValues"><i>GrayValues</i></a>) const</code></p>
<p>
<code><a href="HTemplate.html">HTemplate</a> <a href="HImage.html">HImage</a>::<b>CreateTemplate</b>(Hlong <a href="#FirstError"><i>FirstError</i></a>, Hlong <a href="#NumLevel"><i>NumLevel</i></a>, const wchar_t* <a href="#Optimize"><i>Optimize</i></a>, const wchar_t* <a href="#GrayValues"><i>GrayValues</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>CreateTemplate</b>(<a href="HObject.html">HObject</a> <a href="#Template"><i>template</i></a>, <a href="HTuple.html">HTuple</a> <a href="#FirstError"><i>firstError</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NumLevel"><i>numLevel</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Optimize"><i>optimize</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GrayValues"><i>grayValues</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#TemplateID"><i>templateID</i></a>)</code></p>
<p>
<code>public <a href="HTemplate.html">HTemplate</a>(<a href="HImage.html">HImage</a> <a href="#Template"><i>template</i></a>, int <a href="#FirstError"><i>firstError</i></a>, int <a href="#NumLevel"><i>numLevel</i></a>, string <a href="#Optimize"><i>optimize</i></a>, string <a href="#GrayValues"><i>grayValues</i></a>)</code></p>
<p>
<code>void <a href="HTemplate.html">HTemplate</a>.<b>CreateTemplate</b>(<a href="HImage.html">HImage</a> <a href="#Template"><i>template</i></a>, int <a href="#FirstError"><i>firstError</i></a>, int <a href="#NumLevel"><i>numLevel</i></a>, string <a href="#Optimize"><i>optimize</i></a>, string <a href="#GrayValues"><i>grayValues</i></a>)</code></p>
<p>
<code><a href="HTemplate.html">HTemplate</a> <a href="HImage.html">HImage</a>.<b>CreateTemplate</b>(int <a href="#FirstError"><i>firstError</i></a>, int <a href="#NumLevel"><i>numLevel</i></a>, string <a href="#Optimize"><i>optimize</i></a>, string <a href="#GrayValues"><i>grayValues</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>create_template</b>(<a href="#Template"><i>template</i></a>: HObject, <a href="#FirstError"><i>first_error</i></a>: int, <a href="#NumLevel"><i>num_level</i></a>: int, <a href="#Optimize"><i>optimize</i></a>: str, <a href="#GrayValues"><i>gray_values</i></a>: str) -&gt; HHandle</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">create_template</span><span data-if="c" style="display:none">create_template</span><span data-if="cpp" style="display:none">CreateTemplate</span><span data-if="com" style="display:none">CreateTemplate</span><span data-if="dotnet" style="display:none">CreateTemplate</span><span data-if="python" style="display:none">create_template</span></code> preprocesses a pattern
(<a href="#Template"><i><code><span data-if="hdevelop" style="display:inline">Template</span><span data-if="c" style="display:none">Template</span><span data-if="cpp" style="display:none">Template</span><span data-if="com" style="display:none">Template</span><span data-if="dotnet" style="display:none">template</span><span data-if="python" style="display:none">template</span></code></i></a>),
which is passed as an image, for the template matching.
After the transformation, a number (<a href="#TemplateID"><i><code><span data-if="hdevelop" style="display:inline">TemplateID</span><span data-if="c" style="display:none">TemplateID</span><span data-if="cpp" style="display:none">TemplateID</span><span data-if="com" style="display:none">TemplateID</span><span data-if="dotnet" style="display:none">templateID</span><span data-if="python" style="display:none">template_id</span></code></i></a>) is
assigned to the template for being used in the further process.
The shape and the size of <a href="#Template"><i><code><span data-if="hdevelop" style="display:inline">Template</span><span data-if="c" style="display:none">Template</span><span data-if="cpp" style="display:none">Template</span><span data-if="com" style="display:none">Template</span><span data-if="dotnet" style="display:none">template</span><span data-if="python" style="display:none">template</span></code></i></a> can be
chosen arbitrarily.
You have to be aware, that the matching is only applied
to that part of an image where <a href="#Template"><i><code><span data-if="hdevelop" style="display:inline">Template</span><span data-if="c" style="display:none">Template</span><span data-if="cpp" style="display:none">Template</span><span data-if="com" style="display:none">Template</span><span data-if="dotnet" style="display:none">template</span><span data-if="python" style="display:none">template</span></code></i></a> fits
completely into the image.
</p>
<p>The template has been chosen such that it contains no pixels of the
(changing) background.
Here you can make use of the arbitrary shape of a template
which is not restricted to a rectangle.
To create a template region you can use segmentation operators like
<a href="threshold.html"><code><span data-if="hdevelop" style="display:inline">threshold</span><span data-if="c" style="display:none">threshold</span><span data-if="cpp" style="display:none">Threshold</span><span data-if="com" style="display:none">Threshold</span><span data-if="dotnet" style="display:none">Threshold</span><span data-if="python" style="display:none">threshold</span></code></a> or one of the draw_* operators.
In the case of sub pixel accurate matching
<a href="#Template"><i><code><span data-if="hdevelop" style="display:inline">Template</span><span data-if="c" style="display:none">Template</span><span data-if="cpp" style="display:none">Template</span><span data-if="com" style="display:none">Template</span><span data-if="dotnet" style="display:none">template</span><span data-if="python" style="display:none">template</span></code></i></a> has in addition to be one pixel smaller
than the pattern (i.e. one pixel border to the changing background).
This can be done e.g., by applying 该算子
<a href="erosion_circle.html"><code><span data-if="hdevelop" style="display:inline">erosion_circle</span><span data-if="c" style="display:none">erosion_circle</span><span data-if="cpp" style="display:none">ErosionCircle</span><span data-if="com" style="display:none">ErosionCircle</span><span data-if="dotnet" style="display:none">ErosionCircle</span><span data-if="python" style="display:none">erosion_circle</span></code></a>.
</p>
<p>The parameter <a href="#NumLevel"><i><code><span data-if="hdevelop" style="display:inline">NumLevel</span><span data-if="c" style="display:none">NumLevel</span><span data-if="cpp" style="display:none">NumLevel</span><span data-if="com" style="display:none">NumLevel</span><span data-if="dotnet" style="display:none">numLevel</span><span data-if="python" style="display:none">num_level</span></code></i></a> specifies the number
of pyramid levels (<a href="#NumLevel"><i><code><span data-if="hdevelop" style="display:inline">NumLevel</span><span data-if="c" style="display:none">NumLevel</span><span data-if="cpp" style="display:none">NumLevel</span><span data-if="com" style="display:none">NumLevel</span><span data-if="dotnet" style="display:none">numLevel</span><span data-if="python" style="display:none">num_level</span></code></i></a> = 1 means only
original gray values) which can be used for matching.
The number of levels used later for matching will be below or
equal this value.
If the pattern becomes too small due to zooming,
the maximum number of pyramid levels is automatically
reduced (without error message).
</p>
<p>The parameter <a href="#GrayValues"><i><code><span data-if="hdevelop" style="display:inline">GrayValues</span><span data-if="c" style="display:none">GrayValues</span><span data-if="cpp" style="display:none">GrayValues</span><span data-if="com" style="display:none">GrayValues</span><span data-if="dotnet" style="display:none">grayValues</span><span data-if="python" style="display:none">gray_values</span></code></i></a> defines, whether
the original gray values (<i><span data-if="hdevelop" style="display:inline">'original'</span><span data-if="c" style="display:none">"original"</span><span data-if="cpp" style="display:none">"original"</span><span data-if="com" style="display:none">"original"</span><span data-if="dotnet" style="display:none">"original"</span><span data-if="python" style="display:none">"original"</span></i>, <i><span data-if="hdevelop" style="display:inline">'normalized'</span><span data-if="c" style="display:none">"normalized"</span><span data-if="cpp" style="display:none">"normalized"</span><span data-if="com" style="display:none">"normalized"</span><span data-if="dotnet" style="display:none">"normalized"</span><span data-if="python" style="display:none">"normalized"</span></i>) or
the edge amplitude (<i><span data-if="hdevelop" style="display:inline">'gradient'</span><span data-if="c" style="display:none">"gradient"</span><span data-if="cpp" style="display:none">"gradient"</span><span data-if="com" style="display:none">"gradient"</span><span data-if="dotnet" style="display:none">"gradient"</span><span data-if="python" style="display:none">"gradient"</span></i>, <i><span data-if="hdevelop" style="display:inline">'sobel'</span><span data-if="c" style="display:none">"sobel"</span><span data-if="cpp" style="display:none">"sobel"</span><span data-if="com" style="display:none">"sobel"</span><span data-if="dotnet" style="display:none">"sobel"</span><span data-if="python" style="display:none">"sobel"</span></i>) is used.
With <i><span data-if="hdevelop" style="display:inline">'original'</span><span data-if="c" style="display:none">"original"</span><span data-if="cpp" style="display:none">"original"</span><span data-if="com" style="display:none">"original"</span><span data-if="dotnet" style="display:none">"original"</span><span data-if="python" style="display:none">"original"</span></i> the sum of the differences is used
as feature which is very stable and fast if there is no change
in illumination. <i><span data-if="hdevelop" style="display:inline">'normalized'</span><span data-if="c" style="display:none">"normalized"</span><span data-if="cpp" style="display:none">"normalized"</span><span data-if="com" style="display:none">"normalized"</span><span data-if="dotnet" style="display:none">"normalized"</span><span data-if="python" style="display:none">"normalized"</span></i> is used if the
illumination changes. The method is a bit slower and not quite as
stable. Note that <i><span data-if="hdevelop" style="display:inline">'normalized'</span><span data-if="c" style="display:none">"normalized"</span><span data-if="cpp" style="display:none">"normalized"</span><span data-if="com" style="display:none">"normalized"</span><span data-if="dotnet" style="display:none">"normalized"</span><span data-if="python" style="display:none">"normalized"</span></i> allows to compensate additive
illumination changes. If also multiplicative variations of the gray values
occur, correlation-based matching should be used (<a href="create_ncc_model.html"><code><span data-if="hdevelop" style="display:inline">create_ncc_model</span><span data-if="c" style="display:none">create_ncc_model</span><span data-if="cpp" style="display:none">CreateNccModel</span><span data-if="com" style="display:none">CreateNccModel</span><span data-if="dotnet" style="display:none">CreateNccModel</span><span data-if="python" style="display:none">create_ncc_model</span></code></a>).
If there is no change in illumination the mode
<i><span data-if="hdevelop" style="display:inline">'original'</span><span data-if="c" style="display:none">"original"</span><span data-if="cpp" style="display:none">"original"</span><span data-if="com" style="display:none">"original"</span><span data-if="dotnet" style="display:none">"original"</span><span data-if="python" style="display:none">"original"</span></i> should be used.
The edge amplitude is another method to be invariant to changes
in illumination. The disadvantage is the increased execution time
and the higher sensitivity to changes in the shape of the pattern.
The mode <i><span data-if="hdevelop" style="display:inline">'gradient'</span><span data-if="c" style="display:none">"gradient"</span><span data-if="cpp" style="display:none">"gradient"</span><span data-if="com" style="display:none">"gradient"</span><span data-if="dotnet" style="display:none">"gradient"</span><span data-if="python" style="display:none">"gradient"</span></i> is slightly faster
but more sensitive to noise.
</p>
<p>The maximum error for matching has typically to be chosen higher
when using the edge amplitude.
The mode chosen by <a href="#GrayValues"><i><code><span data-if="hdevelop" style="display:inline">GrayValues</span><span data-if="c" style="display:none">GrayValues</span><span data-if="cpp" style="display:none">GrayValues</span><span data-if="com" style="display:none">GrayValues</span><span data-if="dotnet" style="display:none">grayValues</span><span data-if="python" style="display:none">gray_values</span></code></i></a> leads automatically
to calling the appropriate filter during the matching, if necessary.
</p>
<p>As an alternative to the gradient approach 该算子
<a href="set_offset_template.html"><code><span data-if="hdevelop" style="display:inline">set_offset_template</span><span data-if="c" style="display:none">set_offset_template</span><span data-if="cpp" style="display:none">SetOffsetTemplate</span><span data-if="com" style="display:none">SetOffsetTemplate</span><span data-if="dotnet" style="display:none">SetOffsetTemplate</span><span data-if="python" style="display:none">set_offset_template</span></code></a> can be used,
if the change in illumination is known.
</p>
<p>The parameter <a href="#Optimize"><i><code><span data-if="hdevelop" style="display:inline">Optimize</span><span data-if="c" style="display:none">Optimize</span><span data-if="cpp" style="display:none">Optimize</span><span data-if="com" style="display:none">Optimize</span><span data-if="dotnet" style="display:none">optimize</span><span data-if="python" style="display:none">optimize</span></code></i></a> specifies if the pattern
has to be optimized for runtime. This optimization results
in a longer time to create the template but reduces the
time for matching. In addition the optimization
leads to a more stable matching, i.e., the possibilty
to miss good matches is reduced.
The optimization process selects the most stable and
significant gray values to be
tested first during the matching process. Using this technique a wrong
match can be eliminated very early.
</p>
<p>The reference position for the template is its center of gravity.
I.e. if you apply the template to the original image the
center of gravity is returned. This default reference
can be adapted using 该算子 <a href="set_reference_template.html"><code><span data-if="hdevelop" style="display:inline">set_reference_template</span><span data-if="c" style="display:none">set_reference_template</span><span data-if="cpp" style="display:none">SetReferenceTemplate</span><span data-if="com" style="display:none">SetReferenceTemplate</span><span data-if="dotnet" style="display:none">SetReferenceTemplate</span><span data-if="python" style="display:none">set_reference_template</span></code></a>.
</p>
<p>In sub pixel mode a special position correction is
calculated which is added after each matching:
The template is applied to the original image and the
difference between the found position and the center of gravity
is used as a correction vector. This is important for patterns
in a textured context or for asymmetric pattern. For most templates this
correction vector is near null.
</p>
<p>Before the use of the template, which is stored independently of the
image size, it can be adapted explicitly to
the size of a definite image size by using <a href="adapt_template.html"><code><span data-if="hdevelop" style="display:inline">adapt_template</span><span data-if="c" style="display:none">adapt_template</span><span data-if="cpp" style="display:none">AdaptTemplate</span><span data-if="com" style="display:none">AdaptTemplate</span><span data-if="dotnet" style="display:none">AdaptTemplate</span><span data-if="python" style="display:none">adapt_template</span></code></a>.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<p>This operator returns a handle. Note that the state of an instance of this handle type may be changed by specific operators even though the handle is used as an input parameter by those operators.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Template" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Template</span><span data-if="c" style="display:none">Template</span><span data-if="cpp" style="display:none">Template</span><span data-if="com" style="display:none">Template</span><span data-if="dotnet" style="display:none">template</span><span data-if="python" style="display:none">template</span></code></b> (input_object)  </span><span>singlechannelimage <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject</span> (byte)</span>
</div>
<p class="pardesc">Input image whose domain will be processed
for the pattern matching.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="FirstError" class="parname"><b><code><span data-if="hdevelop" style="display:inline">FirstError</span><span data-if="c" style="display:none">FirstError</span><span data-if="cpp" style="display:none">FirstError</span><span data-if="com" style="display:none">FirstError</span><span data-if="dotnet" style="display:none">firstError</span><span data-if="python" style="display:none">first_error</span></code></b> (input_control)  </span><span>integer <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Not yet in use.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>255</p>
<p class="pardesc"><span class="parcat">List of values:
      </span>255</p>
</div>
  <div class="par">
<div class="parhead">
<span id="NumLevel" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NumLevel</span><span data-if="c" style="display:none">NumLevel</span><span data-if="cpp" style="display:none">NumLevel</span><span data-if="com" style="display:none">NumLevel</span><span data-if="dotnet" style="display:none">numLevel</span><span data-if="python" style="display:none">num_level</span></code></b> (input_control)  </span><span>integer <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Maximal number of pyramid levels.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>4</p>
<p class="pardesc"><span class="parcat">List of values:
      </span>1, 2, 3, 4, 5, 6, 7, 8, 9, 10</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Optimize" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Optimize</span><span data-if="c" style="display:none">Optimize</span><span data-if="cpp" style="display:none">Optimize</span><span data-if="com" style="display:none">Optimize</span><span data-if="dotnet" style="display:none">optimize</span><span data-if="python" style="display:none">optimize</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Kind of optimizing.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'sort'</span>
    <span data-if="c" style="display:none">"sort"</span>
    <span data-if="cpp" style="display:none">"sort"</span>
    <span data-if="com" style="display:none">"sort"</span>
    <span data-if="dotnet" style="display:none">"sort"</span>
    <span data-if="python" style="display:none">"sort"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span>, <span data-if="hdevelop" style="display:inline">'sort'</span><span data-if="c" style="display:none">"sort"</span><span data-if="cpp" style="display:none">"sort"</span><span data-if="com" style="display:none">"sort"</span><span data-if="dotnet" style="display:none">"sort"</span><span data-if="python" style="display:none">"sort"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GrayValues" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GrayValues</span><span data-if="c" style="display:none">GrayValues</span><span data-if="cpp" style="display:none">GrayValues</span><span data-if="com" style="display:none">GrayValues</span><span data-if="dotnet" style="display:none">grayValues</span><span data-if="python" style="display:none">gray_values</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Kind of gray values.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'original'</span>
    <span data-if="c" style="display:none">"original"</span>
    <span data-if="cpp" style="display:none">"original"</span>
    <span data-if="com" style="display:none">"original"</span>
    <span data-if="dotnet" style="display:none">"original"</span>
    <span data-if="python" style="display:none">"original"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'gradient'</span><span data-if="c" style="display:none">"gradient"</span><span data-if="cpp" style="display:none">"gradient"</span><span data-if="com" style="display:none">"gradient"</span><span data-if="dotnet" style="display:none">"gradient"</span><span data-if="python" style="display:none">"gradient"</span>, <span data-if="hdevelop" style="display:inline">'normalized'</span><span data-if="c" style="display:none">"normalized"</span><span data-if="cpp" style="display:none">"normalized"</span><span data-if="com" style="display:none">"normalized"</span><span data-if="dotnet" style="display:none">"normalized"</span><span data-if="python" style="display:none">"normalized"</span>, <span data-if="hdevelop" style="display:inline">'original'</span><span data-if="c" style="display:none">"original"</span><span data-if="cpp" style="display:none">"original"</span><span data-if="com" style="display:none">"original"</span><span data-if="dotnet" style="display:none">"original"</span><span data-if="python" style="display:none">"original"</span>, <span data-if="hdevelop" style="display:inline">'sobel'</span><span data-if="c" style="display:none">"sobel"</span><span data-if="cpp" style="display:none">"sobel"</span><span data-if="com" style="display:none">"sobel"</span><span data-if="dotnet" style="display:none">"sobel"</span><span data-if="python" style="display:none">"sobel"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="TemplateID" class="parname"><b><code><span data-if="hdevelop" style="display:inline">TemplateID</span><span data-if="c" style="display:none">TemplateID</span><span data-if="cpp" style="display:none">TemplateID</span><span data-if="com" style="display:none">TemplateID</span><span data-if="dotnet" style="display:none">templateID</span><span data-if="python" style="display:none">template_id</span></code></b> (output_control)  </span><span>template <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTemplate.html">HTemplate</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Template number.</p>
</div>
<h2 id="sec_result">结果</h2>
<p>如果参数均有效，算子
<code><span data-if="hdevelop" style="display:inline">create_template</span><span data-if="c" style="display:none">create_template</span><span data-if="cpp" style="display:none">CreateTemplate</span><span data-if="com" style="display:none">CreateTemplate</span><span data-if="dotnet" style="display:none">CreateTemplate</span><span data-if="python" style="display:none">create_template</span></code> 返回值 <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
    .
If necessary an exception is raised.</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="draw_region.html"><span data-if="hdevelop" style="display:inline">draw_region</span><span data-if="c" style="display:none">draw_region</span><span data-if="cpp" style="display:none">DrawRegion</span><span data-if="com" style="display:none">DrawRegion</span><span data-if="dotnet" style="display:none">DrawRegion</span><span data-if="python" style="display:none">draw_region</span></a></code>, 
<code><a href="reduce_domain.html"><span data-if="hdevelop" style="display:inline">reduce_domain</span><span data-if="c" style="display:none">reduce_domain</span><span data-if="cpp" style="display:none">ReduceDomain</span><span data-if="com" style="display:none">ReduceDomain</span><span data-if="dotnet" style="display:none">ReduceDomain</span><span data-if="python" style="display:none">reduce_domain</span></a></code>, 
<code><a href="threshold.html"><span data-if="hdevelop" style="display:inline">threshold</span><span data-if="c" style="display:none">threshold</span><span data-if="cpp" style="display:none">Threshold</span><span data-if="com" style="display:none">Threshold</span><span data-if="dotnet" style="display:none">Threshold</span><span data-if="python" style="display:none">threshold</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="adapt_template.html"><span data-if="hdevelop" style="display:inline">adapt_template</span><span data-if="c" style="display:none">adapt_template</span><span data-if="cpp" style="display:none">AdaptTemplate</span><span data-if="com" style="display:none">AdaptTemplate</span><span data-if="dotnet" style="display:none">AdaptTemplate</span><span data-if="python" style="display:none">adapt_template</span></a></code>, 
<code><a href="set_reference_template.html"><span data-if="hdevelop" style="display:inline">set_reference_template</span><span data-if="c" style="display:none">set_reference_template</span><span data-if="cpp" style="display:none">SetReferenceTemplate</span><span data-if="com" style="display:none">SetReferenceTemplate</span><span data-if="dotnet" style="display:none">SetReferenceTemplate</span><span data-if="python" style="display:none">set_reference_template</span></a></code>, 
<code><a href="clear_template.html"><span data-if="hdevelop" style="display:inline">clear_template</span><span data-if="c" style="display:none">clear_template</span><span data-if="cpp" style="display:none">ClearTemplate</span><span data-if="com" style="display:none">ClearTemplate</span><span data-if="dotnet" style="display:none">ClearTemplate</span><span data-if="python" style="display:none">clear_template</span></a></code>, 
<code><a href="write_template.html"><span data-if="hdevelop" style="display:inline">write_template</span><span data-if="c" style="display:none">write_template</span><span data-if="cpp" style="display:none">WriteTemplate</span><span data-if="com" style="display:none">WriteTemplate</span><span data-if="dotnet" style="display:none">WriteTemplate</span><span data-if="python" style="display:none">write_template</span></a></code>, 
<code><a href="set_offset_template.html"><span data-if="hdevelop" style="display:inline">set_offset_template</span><span data-if="c" style="display:none">set_offset_template</span><span data-if="cpp" style="display:none">SetOffsetTemplate</span><span data-if="com" style="display:none">SetOffsetTemplate</span><span data-if="dotnet" style="display:none">SetOffsetTemplate</span><span data-if="python" style="display:none">set_offset_template</span></a></code>, 
<code><a href="best_match.html"><span data-if="hdevelop" style="display:inline">best_match</span><span data-if="c" style="display:none">best_match</span><span data-if="cpp" style="display:none">BestMatch</span><span data-if="com" style="display:none">BestMatch</span><span data-if="dotnet" style="display:none">BestMatch</span><span data-if="python" style="display:none">best_match</span></a></code>, 
<code><a href="best_match_mg.html"><span data-if="hdevelop" style="display:inline">best_match_mg</span><span data-if="c" style="display:none">best_match_mg</span><span data-if="cpp" style="display:none">BestMatchMg</span><span data-if="com" style="display:none">BestMatchMg</span><span data-if="dotnet" style="display:none">BestMatchMg</span><span data-if="python" style="display:none">best_match_mg</span></a></code>, 
<code><a href="fast_match.html"><span data-if="hdevelop" style="display:inline">fast_match</span><span data-if="c" style="display:none">fast_match</span><span data-if="cpp" style="display:none">FastMatch</span><span data-if="com" style="display:none">FastMatch</span><span data-if="dotnet" style="display:none">FastMatch</span><span data-if="python" style="display:none">fast_match</span></a></code>, 
<code><a href="fast_match_mg.html"><span data-if="hdevelop" style="display:inline">fast_match_mg</span><span data-if="c" style="display:none">fast_match_mg</span><span data-if="cpp" style="display:none">FastMatchMg</span><span data-if="com" style="display:none">FastMatchMg</span><span data-if="dotnet" style="display:none">FastMatchMg</span><span data-if="python" style="display:none">fast_match_mg</span></a></code>
</p>
<h2 id="sec_alternatives">可替代算子</h2>
<p>
<code><a href="create_ncc_model.html"><span data-if="hdevelop" style="display:inline">create_ncc_model</span><span data-if="c" style="display:none">create_ncc_model</span><span data-if="cpp" style="display:none">CreateNccModel</span><span data-if="com" style="display:none">CreateNccModel</span><span data-if="dotnet" style="display:none">CreateNccModel</span><span data-if="python" style="display:none">create_ncc_model</span></a></code>, 
<code><a href="create_template_rot.html"><span data-if="hdevelop" style="display:inline">create_template_rot</span><span data-if="c" style="display:none">create_template_rot</span><span data-if="cpp" style="display:none">CreateTemplateRot</span><span data-if="com" style="display:none">CreateTemplateRot</span><span data-if="dotnet" style="display:none">CreateTemplateRot</span><span data-if="python" style="display:none">create_template_rot</span></a></code>, 
<code><a href="read_template.html"><span data-if="hdevelop" style="display:inline">read_template</span><span data-if="c" style="display:none">read_template</span><span data-if="cpp" style="display:none">ReadTemplate</span><span data-if="com" style="display:none">ReadTemplate</span><span data-if="dotnet" style="display:none">ReadTemplate</span><span data-if="python" style="display:none">read_template</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Matching</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
